package com.ld.security.common.activiti.core;

import com.ld.security.common.activiti.core.po.*;
import com.ld.security.common.activiti.core.vo.FlowPageVo;
import com.ld.security.common.activiti.core.vo.TaskArgsVo;
import com.ld.security.common.activiti.core.vo.TaskPageVo;

import java.util.Map;

public interface BaseFlowService {

    /**
     * 部署流程
     * 返回id
     * @return
     */
    String createDeployment();

    /**
     * 启动一个流程
     *    * 返回id
     * @return
     */
    String startFlow(StartFlowPo po);


    /**
     * 流程实例分页查询
     * 如果想想判断流程是否进行中的，拿这个方法查一次即可。
     * 进行中的
     * @return
     */
    FlowPageVo flowPage(FlowPagePo po);

    /**
     * 历史流程实例分页
     * 进行中的，结束的
     * @param po
     * @return
     */
    FlowPageVo hiFlowPage(FlowPagePo po);
    /**
     * 分页查询任务
     * 进行中的
     * @param po
     * @return
     */
    TaskPageVo taskPage(TaskPagePo po);

    /**
     * 历史任务分页
     * 进行中，结束
     * @param po
     * @return
     */
    TaskPageVo hiTaskPage(TaskPagePo po);
    /**
     * 提交任务
     * @param po
     * @return
     */
    void completeTask(CompleteTaskPo po);




    /**
     * 设置任务变量
     */
    void setTaskArgs(TaskArgsPo po);


    //得到流程变量
    TaskArgsVo getTaskLocalArgs(String taskId);



}
